Method and system for transmission of data for two-or three-dimensional geometrical entities

ABSTRACT

A method for transmission of data for two- or three-dimensional geometrical entities uses a computer system ( 1 ), for modelling and/or manipulation of geometrical entities ( 10 ). The computer system ( 1 ) comprises at least one program for modelling and/or manipulation ( 11 ) and at least one display programme ( 12 ), the at least one modelling and/or manipulation program ( 11 ) transmits the data associated with the geometrical entities ( 10 ) for display to the at least one display program ( 12 ), by calling up display functions located within the at least one display program ( 12 ). An exporting program ( 15 ) for data associated with geometrical entities ( 10 ) is substituted in at least one of the at least one display programmes ( 12 ), the exporting program ( 15 ) having the same display functions as the at least one display program ( 12 ).

[0001] The present invention relates generally to the exportation of computer data, and more particularly to the exportation of data associated with geometric entities, from a computer program such as computer assisted design (CAD) software or a video game.

[0002] The technique and systems of modeling and/or manipulation of geometric entities such as CAD and video games are now very widespread in all the fields of industry, from the computer assisted design of products such as automotive vehicles and aircraft, to action games and 3D virtual reality, by passing through programs of simulation such as flight simulators.

[0003] In particular, although the CAD technique is relatively new, less than about twenty years, the increasing need for compatibility with prior CAD systems has led to the conservation of historical data structures using only partially the possibilities offered by the modern computer systems, in spite of the rapid development of information technologies.

[0004] Moreover, whether in the field of CAD or video games, the format of these data structures used is universally proprietary, which is to say that it belongs to the software in question or at a minimum to the editor of the software in question. However, at least in the field of CAD, the graphic software in general has functionalities to import various formats of data associated with geometric entities.

[0005] On the other hand, for obvious reasons of conservation of the client base, the editors of this software, no matter who they are, are very little inclined to publish the specifications of the data formats that they use, and along the same line, they are generally fairly reticent to propose uses permitting the exporter all the data from their software to concurrent software.

[0006] This situation has the result that it is very difficult to transfer completely data used by this software, from a modeling and/or manipulating computer system for geometric data, toward a similar computer system. However, this transfer is frequently made necessary, for example, to transfer data between heterogeneous CAD systems such as are encountered in various subcontractors of a same ordering entity, even within a same enterprise, as takes place in particular for generally historic reasons in large enterprises using CAD for a long time.

[0007] Similarly, it can be foresee that the development of the technique of video games permits, in the long run, importing personages or objects into a video game, which raises once more the problem of exporting this type of entity from another game.

[0008] This requirement for transfer of data between heterogeneous modeling and/or manipulation systems for data associated with geometric entities, has the result of very high cost of development in the conversion utilities of these data, because of the absence of precise specifications concerning the format of the databases in question, and also because the utilities must be rewritten in whole or in part during improvements or modifications given to the structure of the databases of the systems in question. Moreover, this conversion is generally incomplete, because of the absence of precise specifications relating to the format of the data to be converted.

[0009] Moreover, there exists a need, in enterprises using CAD systems, for a structure and a format of open data, widespread and well-defined, both as a means of exchange between different CAD systems, and to ensure minimum independence vis a vis editors of CAD software that it uses, so as to permit the acquisition of CAD data from one software into another in case of cessation of activity of the editor of the CAD software used.

[0010] Given the above, it is clear that there exists a need for a process and a system permitting, at low cost and reliably, the exportation of data associated with geometric entities, from any modeling and/or manipulation software for data associated with geometric entities, without any knowledge of the data structures used by this software, without any modification of this software in any way, and without development of a specific interface to the software in question.

[0011] There exists in the prior art utilities such as g1Trace or g1AnalysePro, permitting intercepting and storing company calls or graphical originals carried out by a graphical application. However, these utilities have only the function of debugging the graphical application in question, and in no way permit the exportation of data associated with geometric entities toward other systems of the same nature.

[0012] The present invention thus has for its object to provide a process for the exportation of data associated with geometric entities using a computer system for modeling and/or manipulation of geometric entities, said computer system for modeling and/or manipulation of geometric entities comprising at least one central processing unit that can carry out computer programs, a memory that can store said computer programs and data associated with geometric entities for the duration of the execution of said computer programs, and at least one storage unit that can permanently store the data associated with geometric entities, said computer system comprising at least one program for modeling and/or manipulation of geometric entities and at least one program for data display associated with geometric entities, said at least one program for modeling and/or manipulation transmitting the data associated with geometric entities to be displayed to said at least one display program by calling the display functions located in said at least one display program, said data to be displayed by said display program being transmitted by said at least one program for modeling and/or manipulation to said at least one display program in the form of call parameters of said display functions called by said at least one program for modeling and/or manipulation of geometric entities, said display functions permitting the display of a certain number of data associated with geometric entities, and which is characterized by the fact that a program of exportation of data associated with geometric entities is substituted for at least one of said at least one display programs, said exportation program having the same display functions of data associated with geometric entities as said at least one display program, said display functions of data associated with geometric entities of said exportation program having the same parameters as the corresponding functions of said at least one display program, said at least one modeling and/or manipulation program of geometric entities calling transparently the functions of said exportation program instead of the corresponding functions of said at least one display program.

[0013] In the process of the invention, at least one of said at least one programs for modeling and/or manipulation can be, for example, a program of the computer assisted design type or CAD, or else a program of the video game type.

[0014] Moreover, during a call of said at least one modeling and/or manipulating program, to one of said display functions of said exportation program, said exportation program can store in a suitable format in said at least one storage unit, data from a processing by said exportation program of the calls of said at least one modeling and/or manipulation program to said display functions of said exportation program.

[0015] Moreover, during a call of said at least one modeling and/or manipulating process to one of said display functions of said exportation program, said exportation program can call the display function of said display program corresponding to said display function called in said exportation program with the same call parameters as those present in the call to said function of said exportation program.

[0016] In this case, said called program of display can be said display program for which said exportation program has been substituted, or on the contrary, a different display program for which said exportation program has been substituted.

[0017] Moreover, said computer system can comprise also at least one graphical display device, said at least one display device comprising at least one refreshing and/or display memory, said at least one display program commanding said at least one display device to perform the digitization in the form of points of said calls as a function of the display received by said display program, said display device storing in said refreshing and/or display memory said points from said digitization of said calls of display functions received by said at least one display program.

[0018] In this case, said computer system can comprise moreover at least one graphical screen and in which said refreshing and/or display memory is read again by said at least one display device, said at least one display device displaying on said at least one graphical screen said points reread from said refreshing and/or display memory.

[0019] Said exporting of data by said exporting program can thus be started by at least one particular graphical instruction transmitted by said at least one modeling and/or manipulation program to said exporting program, said at least one particular graphical instruction starting said exportation of data being, for example, an instruction giving rise to the completion of said digitizing of said graphical function calls received at said points in said refreshing and/or display memory.

[0020] As a modification, said at least one display device can comprise at least two refreshing and/or display memories, and in which said instruction giving rise to said exporting can thus be an instruction causing the switching of one of said at least two refreshing and/or display memories toward another of said at least two refreshing and/or display memories.

[0021] Moreover, during a call of said modeling and/or manipulation portion to one of said display functions of said exporting program, said exporting program can store in said memory, under a suitable format, data from a processing by said exporting program of the calls to said display functions of said exporting program. In this case, said computer system can execute moreover a utility program rereading in said memory said data from a processing by said exporting program. Moreover, said utility program rereading said memory can thus store under a suitable program in said at least one storage unit, said data from a processing by said exporting program reread from said memory.

[0022] Moreover, said utility program can moreover display said data reread from said memory with the help of suitable calls to the display functions of said at least one display program.

[0023] One of said at least one display programs for which is substituted said exporting program could be for example according to the specification OpenGL of Silicon Graphics, Inc. In this case, said at least one instruction giving rise to said exporting could be the instruction OpenGL “wglSwapBuffers” and/or the instruction OpenGL “glFlush”.

[0024] Similarly, one of said at least one display programs for which is substituted said exporting program could also be according to the specification DirectX of Microsoft.

[0025] Ordinarily, in the process of the invention, said data associated with said geometric enterprises will comprise geometric data. In this case, said geometric data could be of the bi-dimensional and/or tri-dimensional type. Moreover, said geometric data could thus comprise data on points, and/or data of segments with two points, and/or data concerning triangles, and/or data concerning quadrangles, and/or data concerning polygons.

[0026] Similarly, said geometric data could be associated with geometric entities of the line type and/or of the surface type and/or of the volumetric type. Said geometric data associated with geometric entities could thus comprise moreover geometric data associated with at least one vector normal to at least one of said entities of the line type and/or of the surface type and/or of the volumetric type.

[0027] Similarly, said data associated with geometric entities could comprise data as to color and/or data as to texture.

[0028] The invention also provides a system for exporting data associated with geometric entities, using a computer system for modeling and/or manipulating geometric entities, said computer system for modeling and/or manipulation of geometric entities comprising at least one central processing unit that can execute computer programs, a memory that can stock said computer programs and data associated with geometric entities for the duration of the execution of said computer programs, and at least one storage unit that can store permanently data associated with geometric entities, said computer system comprising at least one program for modeling and/or manipulating geometric entities and at least one program for displaying data associated with geometric entities, said at least one program of modeling and/or manipulating transmitting the data associated with geometric entities to be displayed, to said at least one display program, by calling display functions located in said at least one display program, said data to be displayed by said display program being transmitted by said at least one program for modeling and/or manipulation to said at least one display program in the form of the call parameters of said display functions called by said at least one program for modeling and/or manipulating geometric entities, said display functions permitting displaying a certain number of data associated with geometric entities, and which is characterized by the fact that it uses the process according to any one of the preceding claims.

[0029] There will now be described, only by way of example, two embodiments of the invention, with reference to the accompanying drawings, in which:

[0030]FIG. 1 is the operational diagram for displaying a geometric model on the screen of a computer with the help of a library of standard display functions, without using the exporting process of the invention;

[0031]FIG. 2 is the operating diagram of the display of a geometric model on the screen of a computer, by using the exporting process of data associated with geometric entities, according to the invention;

[0032]FIG. 3 is an organogram of the process of exporting data of a geometric model according to the invention;

[0033]FIG. 4 is a detailed organogram of the keypad 40 of FIG. 3 in a first embodiment of the process of the invention;

[0034]FIG. 5 is the detailed organogram of the keypad 40 of FIG. 3 in a second embodiment of the process of the invention.

[0035] The process of the invention operates on computer system 1 for modeling and/or manipulating data associated with geometric entities.

[0036] This computer system 1 permits the use by the user 2, not shown, of a program for modeling and/or manipulating 11 of data associated with geometric entities, whether the process of the invention is or is not used in the computer system 1. The computer system 1 moreover permits the display on a graphic screen 14 of graphic signals from a graphic interface card 13 controlled by a library of graphic functions 12.

[0037] In what follows, the program 11 for modeling and/or manipulation 11 of data associated with geometric entities could also be referred to as the graphic application 11 for the sake of simplicity.

[0038] In the preferred embodiments of the invention, the computer system 1 used to cause the process of the invention to operate, is a computer using the user system Windows of Microsoft, and in this user system, the display program of geometric data 12 is a graphic API (Advanced Programming Interface) implemented via a Dynamic Link Library, according for example to the OpenGL specification of the firm Silicon Graphics Inc. This DLL is ordinarily located in the repertoire system of Windows, and it is called “opening132.dll”.

[0039] The OpenGL library comprising several hundreds of functions, the assembly of the OpenGL functions used by way of example in this description, whether with or without the practice of the process of the invention, has been voluntarily limited to a very reduced subassembly of the OpenGL functions to permit this description to occupy a reasonable-space. However, it must of course be understood that the principle of the invention is not limited to the OpenGL functions presented in this description, but that it applies similarly to all the functions present in the OpenGL specification.

[0040] Referring to FIG. 1, there will now be described the principle of operation of the display of a geometric model 10 on the graphic screen 14 without the use of the exporting process of data of the invention.

[0041] When the graphic application 11 desires to display a geometric model 10 on the graphic screen 14, it calls on graphical functions located in the DLL of graphic interface 12. This graphic interface 12 sends commands of the vectorial type to the graphic card 13 via its associated software pilot 13.

[0042] The computer screens properly so called being constituted by cathode tubes, or similar devices, carrying out the display by a video type sweeping, this has the result that it is necessary to store a binary image of the displayed graphical data, such that a persistence of vision of the graphical data displayed can be held for the user 2. This binary image, comprised of a certain number of bits for each of the displayable points of the screen 14, is stored in a memory internal to the graphical card 13, called a refreshing memory. The persistence of vision of the data for the user 2 is obtained by the graphical card 13 by rereading this binary image several dozens of times per second, and by generating from the reread information video signals representative of the image stored in the refreshing memory of the graphical card 13. These video signals are sent by the graphical card 13 to the graphical screen 14 on which they give rise to the display of the image stored in binary form in the refreshing memory of the graphical card 13.

[0043] A graphical application 11 seeking to display a geometric model 10 on the computer screen 14 will thus carry out a series of calls to the graphical functions present in the DLL OpenGL12. In the OpenGL specification, this series of calls of graphical functions is terminated by a call to a particular function which gives rise to the completion of the conversion of the instructions sent to the card 13 binary point by point displayed on the graphical screen 14.

[0044] For example, to display a geometric model 10 constituted by a strip of two triangles T1 and T2 passing respectively through the points ABC and BCD of respective coordinates:

[0045] A: (0,10,01);

[0046] B: (0,10,−10);

[0047] C: (0,0,0);

[0048] D: (0,0,−10);

[0049] the graphical application 11 will carry out calls of graphical functions according to the DLL OpenGL 12:

[0050] glBegin(GL_TRIANGLE_STRIP)

[0051] glVertex3fv(0.000,10.000,0.000)

[0052] glVertex3fv(0.000,10.000,−10.000)

[0053] glVertex3fv(0.000,0.000,0.000)

[0054] glVertex3fv(0.000,0.000,−10.000)

[0055] glEnd⋄

[0056] wglSwapBuffers⋄

[0057] In this series of calls, the call glBegin(GL_TRIANGLE_STRIP) indicates the beginning of a strip of triangles and the call glEnd⋄ indicates the end of it. The glVertex3fv function permits defining one of the summits of the triangles by its three coordinates x, y and z.

[0058] When all the preceding elements have been transmitted by the graphical application 11 to the graphical API 12 via the above functional calls, the graphical application 11 gives rise to the completion of the display of the elements previously transmitted with the help of an appropriate function of API graphic 12, such as the function “glFlush” or the function “wglSwapBuffers”, figuring in the above example. These functions both give rise to the completion of the conversion of the graphical instructions previously received as an image of bits in the current refreshing memory of the graphical card 13, which has the result of ending the display of the graphic receptions previously received on the graphical screen 14.

[0059] The instruction “wglSwapBuffers” gives rise moreover to the permutation of the two raster memories of the graphical card 13 in the case in which this graphical card 13 has two of them.

[0060] In the case of the described example of display, the reception of the instruction “wglSwapBuffers” has the effect of causing the effective display on the graphic screen 14 of the graphical instructions transmitted by the graphical application 11, to the graphical card 13, via the graphical interface 12. In this event, this has the effect of completing the display of the geometric model 10 constituted by the two triangles T1 and T2 on this screen 14.

[0061] Referring now to FIGS. 2 and 3, there will now be described the exporting of a geometric model using the exporting process of the invention.

[0062] During the installation of the exporting program of graphical data using the process of the invention, the DLL “openg132.dll” 12 originally present in the repertory system of Windows is renamed, for example, as “openg132bis.dll” and it is replaced by a DLL 15 using the process of the invention, and named identically as the original, namely, “openg132.dll”. This DLL 15 according to the invention has the same functions according to the OpenGL specification as the original DLL 12, which is to say that it offers the same interface functions, with the same names and the same parameters, as the original DLL OpenGL 12.

[0063] When an operator 2, not shown, desires to export the data of a geometric model 10 created and/or manipulated by graphical application 11, he first uses the DLL carrying out the process of the invention as described above. He then displays the desired geometric model 10 by graphic application 11. In the same way as described previously in the scope of use of the computer system 1 without using the process of the invention, when the graphical application desires to display a geometric model on the screen, it uses DLL 15 called “openg132.dll” located in the repertory system of Windows, which is to say that it carries out calls to the functions and to the originals according to the OpenGL specification contained in this DLL 15.

[0064] Given that, at the time of installation of the exporting program of data associated with geometric entities according to the invention, DLL 12 has been replaced by DLL 15 using the process of the invention, the graphical application then calls in a transparent manner the functions and originals present in DLL 15 using the process of the invention, instead of and in place of the functions and originals present in the original DLL 12.

[0065] As a modification, the DLL 15 called “openg132.dll” could be installed only for use in a particular modeling or geometric manipulation 11, by installing DLL 15 only in the repertory of the particular application 11. Thus, when the system for using Windows searches a DLL 15 reference by an application 11, it searches first of all this DLL 15 in the same repertory as the one in which is located the application 11. If no result, the system of exploiting Windows then searches this DLL 15 in predefined repertories of the system 1, which comprise among other things the repertory system in which is installed the Windows system of exploitation.

[0066] Thus, when the process of the invention is practiced, and by referring to the example described above, the DLL 15 of the process of the invention receives, instead of and in place of the original DLL OpenGL 12, the calls of graphical function destined for this latter. In the actual embodiments of the invention, the DLL 15 of the invention thus transmits to the original DLL 12 the operating calls received, which is to say that it calls the functions corresponding to the DLL 12 with the same parameters as those received in the calls from graphical application 11.

[0067] As a result, the DLL 15 of the invention receives the following functional calls:

[0068] glBegin(GL_TRIANGLE_STRIP)

[0069] glVertex3f v(0.000,10.000,0.000)

[0070] glVertex3f v(0.000,10.000,−10.000)

[0071] glVertex3f v(0.000,0.000,0.000)

[0072] glVertex3f v(0.000,0.000,−10.000)

[0073] glEnd⋄

[0074] wglSwapBuffers⋄

[0075] To export the data associated with geometric entities, the program contained in the DLL 15 according to the invention stores and manages in its memory 16 a certain number of tables of data associated with geometric entities, such as, in a non-limiting way, a table of “Points” of points and a table “Triangles” of triangles. Initially, these two tables are empty, which is to say that the number of elements NPoints of the Points table and the number of elements NTriangles of the Triangles table are both zero.

[0076] The program of the DLL 15 begins with step 30 in which is initialized the number NPoints of points and the number of NTriangles of Triangles at the value 0, then it awaits the reception of a graphical instruction from the graphical application 11. During reception of the instruction glBegin(GL_TRIANGLE_STRIP), the process according to the invention passes the step 31 in which it tests whether the value of the parameter of the instruction GL_BEGIN is the predetermined value GL_TRIANGLE_STRIP indicating the beginning of a series of graphical instructions defining a strip of triangles by their summits. If the response is negative, the process returns to step 30. If the response to step 31 is positive, which is to say if the value of the parameter is GL_TRIANGLE_STRIP, the process passes to step 32 in which it awaits a graphical instruction.

[0077] During the reception of a graphical instruction, the process of the invention tests in step 33 whether the instruction received is a glVertex3fv instruction; in the case of the given example, the response is positive, and during reception of the call glVertex3fv(0.000,10.000,0.000), the process of the invention thus passes to step 34. In step 34, the program 15 thus increments by one unit the number NPoints of points received, which is to say it passes the number NPoints from its initial zero value to the value 1. It then stores in the Points table the point received, which is to say that, again in step 34, it stores moreover respectively the first, the second and the third parameter of the instruction glVertex3fv received, in this case the values 0.000, 10.000 and 0.000, in the positions of the coordinates x, y and z of the first point in the Points table. The process of the invention then passes to step 35.

[0078] In step 35, the process of the invention tests whether the number NPoints of points received is less than 3. If the response is positive, the process of the invention returns to step 32, otherwise the process of the invention then passes to step 36.

[0079] When, in step 33, the response is negative, this signifies that at least three points have been transmitted by the preceding instructions glVertex3fv. According to the OpenGL specification for the strip of triangles GL_TRIANGLE_STRIP, this indicates that a triangle of the strip, constituted by the three last points received, has been defined.

[0080] As a result, in step 36, the program of DLL 15 using the process of the invention thus increases the number of triangles received by one unit, which is to say that it increases the number NTriangles of triangles received, by one unit. It then stores the numerals n₁, n₂ and n₃ of the points constituting the triangle thus received, which is to say, according to the OpenGL specification, the last three points received, in corresponding positions of the table of triangles, which is to say that it stores the numerals NPoints-2, NPoints-1 and NPoints of the three last points received, in positions n₁, n₂ and n₃ of the numeral position NTriangles of the Triangles table.

[0081] The program 15 then returns to step 32 to await other possible points of the strip of triangles transmitted by the graphical application 11.

[0082] The process of the invention repeats steps 32 to 36 until in step 33 the response is negative.

[0083] In the described example, after having four points via the four instructions “glVertex3fv”, the DLL 15 receives no other “glVertex3fv” instruction, but it receives instead an instruction “glEnd”. As a result, in step 33, the response is negative, and the DLL 15 then passes to step 37.

[0084] In the OpenGL specification, the instruction “glEnd” means that the series of graphical instructions begun by the preceding instruction glBegin, in this case the strip of triangles GL_TRIANGLE_STRIP, is completed.

[0085] In step 37, the DLL 15 tests whether the latter functional call received was a call to the “glEnd” function. If the response is negative, then the program contained in the DLL 15 returns to step 32. When the response to the test in step 37 is positive, the program of the DLL 15 passes to the step 38. In the described example, this takes place when the graphical application 11 sends the instruction “glEnd” after the four instructions “glVertex3fv”.

[0086] In step 38, the program contained in the DLL 15 of the invention awaits an instruction from the graphical application 11, then, when such an instruction has been received, it passes to step 39.

[0087] In step 39, the program of the DLL 15 tests whether the graphical instruction received is an OpenGL instruction “wglSwapBuffers” or “glflush”. If the response is negative, which is to say if the instruction received is neither a “wglSwapBuffers” instruction nor a “glBuffers” instruction, then the program of the DLL 15 according to the process of the invention is terminated. If the response to step 39 is positive, then the program of the DLL 15 passes to step 40.

[0088] In the described example, after sending the “glEnd” instructions, the graphical application 11 then sends the instruction “wglSwapBuffers” to the program 15, but the instruction “glflush” might equally well have been used.

[0089] As indicated above in the framework of the practice of the computer system 1 without using the process of the invention, these instructions cause the completion of the conversion of the graphical instruction and they are displayed properly so called on the screen 14, and they thus comprise implicitly the meaning that the previously transmitted instructions form a coherent whole, because they are to be displayed on the screen 14 without awaiting other graphical instructions.

[0090] As a result, in the embodiments of the invention, these instructions are used to determine whether the graphical instructions previously received form a coherent whole and to then cause their export toward the storage unit 18.

[0091] Consequently, when in step 39, the response to the test is positive, that is to say, when an instruction “wglSwapBuffers” or “glflush” has been received, the instructions previously received by the program 15 form a coherent whole, and the program 15 using the process of the invention then passes to step 40 in which a module 17, called Raider 3D 17, carries out the export, toward the storage unit 18, of the Points and Triangles tables stored in memory 16.

[0092] In the process of the invention, the memory 16 in which are stored the Points and Triangles tables, is a memory provided in the computer using the process of the invention, which means that it can write with DLL 15, and simultaneously reread by the module 17 Raider 3D 17.

[0093] In a first embodiment of the invention, the Points and Triangles tables are exported toward the unit 18 in the form of simple text files in which the points and triangles are recorded in files of the same name in the storage unit 18.

[0094] Referring moreover to FIG. 4, there will now be described the operation of the Raider 3D 17 module according to a first embodiment of the process of the present invention.

[0095] In this first embodiment, in step 41, the Raider 3D 17 module creates and opens a file for exportation of points, called “Points” in the described example, in the storage unit 18, it starts the number i of points recorded in the “Points” file after the value 0, then it passes to step 42.

[0096] In step 42, the Raider 3D 17 module tests whether the number i of points recorded in the “Points” file is less than the number of NPoints present in the contained memory. If the response to step 42 is positive, the Raider 3D 17 module passes to step 43. In step 43, the Raider 3D 17 module increases by one unit the value of the number i, then it writes in the “Points” file the new value of the number i, followed, on the same line, by the three coordinates x, y and z of the point of corresponding i copied from the input i of the “Points” table stored in the contained memory 16. The Raider 3D 17 module then passes to the line of the “Points” file, then it returns to step 42.

[0097] If the response to step 42 is negative, the Raider 3D 17 module passes to step 44. In step 44, the Raider 3D 17 module closes the “Points” file, then it passes to step 45. In step 45, the Raider 3D 17 module creates and opens in the storage unit a file for exportation of triangles, called “Triangles” in the described example, then it begins at zero the value of the number i of triangles written into the “Triangles” file. It then passes to step 46.

[0098] In step 46, the Raider 3D 17 module tests whether the number i of triangles recorded in the “Triangles” file is less than the number of NTriangles present in the contained memory. If the response to step 46 is positive, the Raider 3D 17 module passes to step 47. In step 47, the Raider 3D 17 module increases the number i by one unit, then it writes into the “Triangles” file the number i of the current triangle and, in the same line of the “Triangles” file, it recopies the numbers n₁, n₂ and n₃ of the three points constituting the triangle of numeral i, from the input i of the “Triangles” table stored in the contained memory. The module 17 thus returns to step 46.

[0099] If in step 46, the response is negative, the Raider module passes to step 48 in which it closes the export file “Triangles”.

[0100] The text files “Points” and “Triangles” obtained in the case of the preceding example will thus have the form given in Tables 1 and 2 below, respectively. TABLE 1 1 0.000, 10.000, 0.000 2 0.000, 10.000, −10.000 3 0.000, 0.000, 0.000 4 0.000, 0.000, −10.000

[0101] TABLE 2 1 1, 2, 3 2 2, 3, 4

[0102] The data exporting process connected to entities of the geometric type according to the first embodiment of the present invention is thus completed, and as can be seen, it will permit exporting the geometric model 10 created and/or manipulated by the graphical application 11 without any knowledge of the format of the data of this application, without any modification of this application 11 and without any program development specific to this application 11.

[0103] In a second embodiment of the invention, the exportation format used is the DXF (Data exchange Format) of the AutoDesk company, which is the reference format for the market of exportation materials of data associated with geometric entities.

[0104] The DXF format is a text format because of line information. The lines are gathered in pairs, the first line of the pair containing a whole number datum indicating the type of data figuring in the following line. Thus, when the numerical data of a type is a whole number comprised between 0 and 9, the data figuring on the following line will be a chain of characters, and when the numerical data of a type will be a whole number comprised between 10 and 59, the data figuring on the following line will be a coordinate of three dimensional points of the double precision floating type.

[0105] Moreover, a DXF file is organized in sections. One section is introduced to one pair of lines, one line constituted by the digit 0 introducing a series of characters, and a line constituted by the word key SECTION, and it is terminated by a pair of lines, of which the first is constituted by the digit 0 and the second by the word key ENDSEC.

[0106] A DXF file comprises a certain number of different section types. In particular, the section ENTITIES describing the entities of a geometric type, as well as a certain number of other sections, such as sections defining the parameters or classes, which are outside the scope of the present invention.

[0107] The ENTITIES section is constituted by various geometric entities of the geometric model, each entity being introduced by a series of characters indicating the type of the entity, followed by the parameters necessary for defining the entity in question.

[0108] For example, the definition of a facet in space is introduced by a pair of lines of which the first is constituted by the digit 0 introducing a series of characters, followed by a line constituted by the keyword 3DFACE.

[0109] A facet is space is constituted by three or four points constituting respectively a triangle or a quadrangle, the fourth point being specified as identical to the third so as to indicate, by a convention, a triangle rather than a quadrangle. Each of the four points of a facet is defined by its three coordinates x, y and z, and each of the coordinates is defined, as previously indicated, by a pair of lines, of which the first is a whole number indicator comprised between 10 and 59, and of which the second is the coordinate properly so called.

[0110] In the specification of the DXF format, the indicators for the coordinates X₁, Y₁ and Z₁ of the first point of the facet are respectively 10, 20 and 30, the indicators for the coordinates X₂, Y₂ and Z₂ of the second point of the facet are respectively 11, 21 and 31, the indicators for the coordinates X₃, Y₃ and Z₃ of the third point of the facet are respectively 12, 22 and 32 and the indicators for the coordinates X₄, Y₄ and Z₄ of the fourth point of the facet are respectively 13, 23 and 33.

[0111] In other words, for the point of numeral j, for j varying from 1 to 4 of a facet, the numerical indicator of the coordinate x of the point j is 9+j, the numerical indicator of the coordinate y of the point j is 19+j and the numerical indicator for the coordinate z of point j is 29+j.

[0112] More precisely, referring now to FIG. 5, the Raider 3D 17 module according to the second embodiment of the present invention creates and opens in step 51 an exportation file called, in the described example, “DXF”, then it passes to step 52. In step 52, the Raider 3D 17 module writes the headlines of the file of the DXF format, namely the four following lines:

[0113] 0

[0114] SECTION

[0115] 2

[0116] ENTITIES

[0117] Then it begins at 0 the number i of facets written into the “DXF” file. The Raider 3D 17 module then passes to 53. In step 53, the Raider 3D 17 module tests whether the number i of written facets is less than the number of triangles stored in the onboard memory.

[0118] If the response to step 53 is positive, that is to say, if the number i of triangles previously written in the DXF file is less than the number NTriangles of triangles stored in the onboard memory 16, then the Raider 3D 17 module passes to step 54. In step 54, the Raider 3D 17 module increments by one unit the number i of triangles previously written into the file, then it writes the headlines in the DXF format for one facet, namely the two following lines:

[0119]0

[0120] 3DFACE

[0121] Moreover, still in step 54, the Raider 3D 17 module initiates at 0 the number j of points of the triangle i written into the “DXF” file, then it passes to step 55. In step 55, the Raider 3D 17 module tests whether the number j of points of the triangle i written into the “DXF” file is less than 3. If the response is positive, the Raider 3D 17 module passes to step 56.

[0122] In step 56, the Raider 3D module increases by one unit the number j of points of the triangle i written into the “DXF” file and it computes a numeral n as being equal to Triangles.n_(j), which is to say that n becomes equal to the numeral n_(j) of the point j of the triangle i. It then writes successively the indicator of coordinate x for the point j of the facet in the DXF format, which is to say the value 9+j, on a first line, then the coordinate x itself on the second line, for the point whose numeral n has been previously calculated.

[0123] Similarly, still in step 56 and still for the point of numeral n, the Raider 3D 17 module writes respectively the indicator 19+j on a third line and the coordinate y on a fourth line, then the indicator 29+j on a fifth line and coordinate z on a sixth line. The Raider 3D module then returns to step 55.

[0124] The process of steps 55 and 56 is repeated until in step 55, the response becomes negative, which is to say that the number j of points of the triangle written into the “DXF” file will be equal to 3. At this point of operations, the Raider 3D 17 module will thus have written the three points of the triangle i.

[0125] When i equals 1, which is to say for the first triangle, the Raider 3D 17 module will have thus written successively into the “DXF” file the following lines:

[0126] 10

[0127] 0.0

[0128] 20

[0129] 10.0

[0130] 30

[0131] 0.0

[0132] for the point n₁=1 of the triangle 1, then the lines:

[0133] 11

[0134] 0.0

[0135] 21

[0136] 10.0

[0137] 31

[0138] −10.0

[0139] for the point n₂=2 of the triangle 1, then the lines:

[0140] 12

[0141] 0.0

[0142] 22

[0143] 0.0

[0144] 32

[0145] 0.0

[0146] for the point n₃=3 of the triangle 1.

[0147] When in stead 55, the number j of points written into the “DXF” file is equal to 3, the Raider 3D module passes to step 57. At the beginning of step 57, the Raider 3D module will have thus written in the “DXF” file the three points of the triangle i in the form indicated above. However, the DXF specification requiring four points per facet, as previously mentioned, the third point of numeral n₃ is repeated, which means, according to the DXF convention, that the described facet is a triangle.

[0148] For this, in step 57, the Raider 3D module writes in the file the indicator of coordinate x for the fourth point of the facet, namely 13, on a first line, then the coordinate x on a second line. Similarly, it writes respectively the coordinate indicator y, namely 23, on a third line and the coordinate y on a fourth line, and the indicator of coordinate z, namely 33, on a fifth line and the coordinate z on a sixth line.

[0149] In the case in which i equals 1, which is to say for the first triangle, this means that in step 57, the Raider 3D 17 module writes into the “DXF” file the following lines:

[0150] 13

[0151] 0.0

[0152] 23

[0153] 0.0

[0154] 33

[0155] 0.0

[0156] which repeat the coordinates of the preceding point of the current facet, namely, the third point of the first triangle.

[0157] At the end of step 57, the Raider 3D 17 module returns thus to step 54 to export the following triangle, by using the same process as is described above for the first triangle, until, in step 54, the response becomes positive.

[0158] When in step 54 the response is positive, which is to say that all the triangles previously stored in the onboard memory 16 have been written into the “DXF” file, then the Raider 3D 17 module passes to step 58. In step 58, the Raider 3D 17 module writes the end of section lines, namely the two lines:

[0159] 0

[0160] ENDSEC

[0161] Then the two lines indicating the end of the exportation file in the DXF format, namely:

[0162]0

[0163] EOF

[0164] Then, still in step 58, the Raider 3D 17 module thus forms the “DXF” file, which will accordingly thus have the form shown in Table 3 below: TABLE 3 0 SECTI0N 2 ENTITIES 0 3DFACE 10 0.0 20 10.0 30 0.0 11 0.0 21 10.0 31 −10.0 12 0.0 22 0.0 32 0.0 13 0.0 23 0.0 33 0.0 0 3DFACE 10 0.0 20 10.0 30 −10.0 11 0.0 21 0.0 31 0.0 12 0.0 22 0.0 32 −10.0 13 0.0 23 0.0 33 −10.0 0 ENDSEC 0 EOF

[0165] The process of exporting data connected to geometric type entities according to the second embodiment of the present invention is thus completed, and as will be seen, it will have permitted exporting the geometric model 10 created and/or manipulated by the graphical application 11 without any knowledge of the format of the data of this application, without any modification of this application 11 and without any program development specific to this application 11.

[0166] Obviously, the process of the invention is not limited to the interception and exportation of graphical functions of points and triangles described above. In particular, in the example described previously, the function used for the generation of points has been the glVertex3fv function, but it would be evident to any person of skill in the art that the preceding description is applicable with simple adaptation to any instruction of the glvertex group.

[0167] Moreover, it must be perfectly clear from the previous description that the process of the invention permits the exportation of any OpenGL function desired, such as, in a non-limiting way, the functions defining quadrangular elements, those defining information as to the orientation of surfaces such as the normal to a point, those defining information of color, surface texture, transparency, etc.

[0168] Moreover, the process is not limited to the exportation of geometric structures as simple as those of the described example, but it will be evident to those skilled in the art that the process of the invention permits exporting any geometric model, because any modelized structure, no matter how complex, will be displayed with the help of points of origin, of triangles, of quandrangles, etc., and could thus be exported by using the process described above.

[0169] Similarly, for obvious reasons of simplicity of description, it has been supposed that all the geometric structures used, in particular the points, were distinct, and that as a result there was no need to look for repetition or to optimize in any way whatever tables are employed. In practice, the duplicated elements will be obviously omitted by an appropriate process, either during their recordation in the Points and Triangles tables by the DLL 15 program, or else during their exportation to the storage unit 18 by the Raider 3D 17 module.

[0170] Similarly, the process is not limited to the embodiments described using the OpenGL graphical library, and it will be evident to all persons skilled in the art that the technique described above is also applicable to any other library of display functions 12 adapted to be used by the application of modeling or geometric modeling 10, such as, by way of non-limiting example, the DirectX display library of Microsoft.

[0171] Moreover, the process of the invention can be used for any particular application 11 desire, rather than for all the graphical applications present in the modeling and/or manipulation system 1, by installing DLL 15 using the process of the invention only for the desired application repertory 11, instead of in the repertory system of the Windows user system.

[0172] From the above, it will be seen that the process of the invention has permitted exporting information as to the geometry of the modeled example 10 by the application 11, without any modification of this application 11, without any development of a specific program for this application 11, and without any knowledge of the format of data used by this latter, only by intercepting the functions and original graphics of this application 11 used for the display of these geometric models 10.

[0173] Given that the format of data used to store the data associated with the geometric entities exported in the storage unit 18 will be, either in a known and open format such as that set forth in the first embodiment, or a standard format on the market such as the DXF format, or else any other format required by a particular application, it will be very easy to import these data into any other desired system of geometric modeling or manipulation.

[0174] The process of the invention is thus accordingly adapted to be applied in a large variety of fields, in particular in all the fields in which the data associated with geometric entities must be exchanged between different systems, as is encountered in all the industries and services using data associated with geometric entities, such as the industries and services of the construction of automobiles or aircraft, of industrial design, of building and/or architecture, of video games, etc. 

1. Process for exporting data associated with geometric entities using a computer system (1) for modeling and/or manipulation of geometric entities (10), said computer system (1) for modeling and/or manipulation of geometric entities (10) comprising at least one central processing unit that can execute computer programs (11, 12, 15), a memory (16) that can store said computer programs (11, 12, 15) and data associated with geometric entities (10) for the duration of the execution of said computer programs (11, 12, 15), and at least one storage unit (18) that can store permanently data associated with said geometric entities (10), said computer system (1) comprising at least one program for modeling and/or manipulation (11) of geometric entities (10) and at least one display program (12) for data associated with geometric entities (10), said at least one program for modeling and/or manipulation (11) transmitting data associated with geometric entities (10) to be displayed to said at least one display program (12) by calling display functions located in said at least one display program (12), said data to be displayed by said display program (12) being transmitted by said at least one modeling and/or manipulation program (11) to said at least one display program (12) in the form of call parameters of said display functions called by said at least one program for modeling and/or manipulation (11) of geometric entities (10), said display functions permitting the display of a certain number of data associated with geometric entities (10), characterized by the fact that an exportation program (15) of data associated with said geometric entities (10) is substituted for at least one of said at least one display programs (12), said exportation program (15) having the same display functions of data associated with geometric entities (10) as said at least one display program (12), said display functions of data associated with geometric entities (10) of said exportation program (15) having the same parameters as the corresponding functions of said at least one display program (12), said at least one program for modeling and/or manipulation (11) of geometric entities calling in a transparent fashion the functions of said exportation program (15) instead of corresponding functions of said at least one display program (12).
 2. Process according to claim 1, in which at least one of said at least one modeling and/or manipulation programs (11) is a program of the computer assisted design type or CAD.
 3. Process according to claim 1 [[or 2]], in which at least one of said at least one modeling and/or manipulation programs (11) is a program of the video game type.
 4. Process according to any one of the prceeding claims claim 1, in which, during a call of said at least one modeling and/or manipulation program (11) at one of said display functions of said exportation program (15), said exportation program (15) stores in a suitable format in said at least one storage unit (18) data from a processing by said exportation program (15) of the calls of said at least one modeling and/or manipulation program (11) to said display functions of said exportation program (15).
 5. Process according to any one of the preceding claims claim 1, in which, during a call of said at least one modeling and/or manipulation program (11) to one of said display functions of said exportation program (15), said exportation program (15) calls the display function of said display program (12) corresponding to said display function called in said exportation program (15) with the same call parameters as those present in the call of said function of said exportation program (15).
 6. Process according to claim 5, in which said called display program is said display program (12) for which said exportation program has been substituted.
 7. Process according to claim 5, in which said called display program is a display program (12) different from that for which said exportation program has been substituted.
 8. Process according to any one of the preceding claims claim 1, in which said computer system (1) comprises moreover at least one graphical display device (13), said at least one display device (13) comprising at least one refreshing and/or display memory, said at least one display program (12) commanding to said at least one display device (13) the digitization in the form of points of said calls of display functions received by said display program (12), said display device (13) storing in said refreshing and/or display memory the points from said digitization of said calls of display functions received by said at least one display program (12).
 9. Process according to claim 8, in which said computer system (1) comprises moreover at least one graphical screen (14) and in which said refreshing and/or display memory is reread by said at least one display device (13), said at least one display device (13) displaying on said at least one graphical screen (14) said points reread from said refreshing and/or display memory.
 10. Process according to claim 8 [[or 9]], in which said exportation of data by said exportation program (15) is triggered by at least one particular graphical instruction transmitted by said at least one modeling and/or manipulation program (11) to said exportation program (15).
 11. Process according to claim 10, in which said at least one particular graphical instruction triggering said exportation of data is an instruction giving rise to the completion of said digitization of said graphical call functions received in said points in said refreshing and/or display memory.
 12. Process according to claim 10 [[or 11]], in which said at least one display device (13) comprises at least two refreshing and/or display memories, and in which said instruction giving rise to said exportation is an instruction giving rise to the switching of one of said at least one refreshing and/or display memories toward another of said at least two refreshing and/or display memories.
 13. Process according to any one of the preceding claims claim 1, in which during a call of said modeling and/or manipulation program (11) to one of said display functions of said exportation program (15), said exportation program (15) stores in said memory (16), in an appropriate format, data from a processing by said exportation program (15) of said calls to said display functions of said exportation program (15).
 14. Process according to claim 13, in which said computer system (1) moreover executes a utility program (17) rereading in said memory (16) said data from a processing by said exportation program (15).
 15. Process according to claim 14, in which said utility program (17) rereading said memory (16) stores in a suitable format in said at least one storage unit (18) said data from a processing by said exportation program (15) reread from said memory (16).
 16. Process according to one of claim 14 or 15 claim 14, in which said utility program (17) displays said data reread from said memory (16) with the help of suitable calls to the display functions of said at least one display program (12).
 17. Process according to any one of the preceding claims claim 1, in which one of said at least one display programs (12) for which is substituted said exportation program (15) is according to the OpenGL specification of Silicon Graphics Inc.
 18. Process according to claim 17, in which said at least one instruction giving rise to said exportation is the OpenGL instruction “wglSwapBuffers” and/or the OpenGL instruction “glFlush”.
 19. Process according to any one of claims 1 to 16 claim 1, in which one of said at least one display programs (12) which is replaced by said exportation program (15) is according to the DirectX specification of Microsoft.
 20. Process according to any one of the preceding claims claim 1, in which said data associated with said geometric entities comprise geometric data.
 21. Process according to claim 20, in which said geometric data are of the bi-dimensional and/or tri-dimensional type.
 22. Process according to one of claims 20 or 21 claim 20, in which said geometric data comprise data as to points, and/or data of segments with two points, and/or data concerning triangles, and/or data concerning quandrangles, and/or data concerning polygons.
 23. Process according to one of claims 20 to 22 claim 20, in which said geometric data are associated with geometric entities of the line type and/or of the surface type and/or of the volumetric type.
 24. Process according to claim 23, in which said geometric data associated with geometric entities comprise moreover geometric data associated with at least one vector normal to at least one of said entities of the line type and/or of the surface type and/or of the volume type.
 25. Process according to any one of the preceding claims claim 1, in which said data associated with geometric entities comprise data as to color and/or data as to texture.
 26. System for the exportation of data associated with geometric entities using a computer system (1) for modeling and/or manipulation of geometric entities (10), said computer system (1) for modeling and/or manipulation of geometric entities (10) comprising at least one central processing unit that can carry out computer programs (11, 12, 15), a memory (16) that can store said computer programs (11, 12, 15) and data associated with geometric entities (10) for the duration of the execution of said computer programs (11, 12, 15), and at least one storage unit (18) that can store permanently data associated with geometric entities (10), said computer system (1) comprising at least one program for modeling and/or manipulation (11) of geometric entities (10) and at least one display program (12) for data associated with said geometric entities (10), said at least one program for modeling and/or manipulation (11) transmitting data associated with said geometric entities (10) to be displayed to said at least one display program (12) by calling the display functions located in said at least one display program (12), said data to be displayed by said display program (12) being transmitted by said at least one program for modeling and/or manipulation (11) to said at least one display program (12) in the form of call parameters of said display functions called by said at least one modeling and/or manipulation program (11) for geometric entities (10), said display functions permitting the display of a certain number of data associated with geometric entities (10), characterized by the fact that it uses the program according to any one of the preceding claims claim
 1. 